package org.quickjsf.core.base.viewmodel;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;

import org.quickjsf.core.base.viewmodel.support.EditableViewModelSupport;

public class EditableViewModel<T> extends BaseDTPanelViewModel<T> implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 5662206277231030647L;
	
	private EditableViewModelSupport<T> editableViewModel;

	public EditableViewModel() {
		super();
		editableViewModel = new EditableViewModelSupport<T>(){
			private static final long serialVersionUID = -3729979815352045647L;
			@Override
			public BaseDTPanelViewModel<T> getDTPanelViewModel() {
				return EditableViewModel.this;
			}
		};
	}
	
	@Override
    @SuppressWarnings("unchecked")  
    protected Class<T> typeClass() {  
        return (Class<T>) ((ParameterizedType) getClass()  
                .getGenericSuperclass()).getActualTypeArguments()[0];  
    }
	
	public EditableViewModelSupport<T> getEditableViewModel() {
		return editableViewModel;
	}

	public void setEditableViewModel(EditableViewModelSupport<T> editableViewModel) {
		this.editableViewModel = editableViewModel;
	}
}
